SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE [dbo].[spGeneraEstimulosDocentes] AS

------------------------------------------------------------------------------------------------
-- GUARDA EN LA TABLA EstimuloDeDocentes LOS ESTIMULOS DE LOS DOCENTES PRIVADOS QUE TAMBIÉN
-- TRABAJAN EN LA EDUCACIÓN PÚBLICA (SOLO LO QUE COBRARIAN EN LA EDUCACIÓN PÚBLICA)
------------------------------------------------------------------------------------------------
SET NOCOUNT ON
Delete From EstimuloDeDocentes
--Create Table EstimuloDeDocentes2 (Agente Int, Monto Float)

Declare @IdAgente Int, @Estimulo Float, @CargoSalarial Int, @Horas Int, @Porcentaje Int, @MontoEstimulo Float,
	@TotalEstimulo Float	

Select @MontoEstimulo = 112.00, @TotalEstimulo = 0, @Estimulo = 0, @Porcentaje = 0

Set Dateformat DMY

Declare Agentes Cursor For
Select Distinct IdAgente From tb_Agentes
Where Exists (Select * From tb_ServiciosAgentes S
	Inner Join tb_SubServiciosAgentes SS On ServicioAgente = idServicioAgente 
	Inner Join tb_Organizaciones On idOrganizaciones = UbicacionOrig	
	Where idAgente = Agente
	And SS.FechaBaja Is Null And S.FechaBaja Is Null And EsPrivada = 'S')

Open Agentes

Fetch Next From Agentes Into @IdAgente

While @@Fetch_Status = 0
Begin

If @idAgente In 
	(Select Distinct Agente From tb_ServiciosAgentes S
	Inner Join tb_SubServiciosAgentes SS On ServicioAgente = idServicioAgente 
	Inner Join tb_Organizaciones On idOrganizaciones = UbicacionOrig	
	Where --Agente = @IdAgente
	(EsPrivada Is Null Or EsPrivada = 'N')
	And ((S.FechaAlta <= '01/04/2003' And Month(S.FechaBaja) = 6 And Year(S.FechaBaja) = 2003) Or (Month(S.FechaAlta) = 4 And Year(S.FechaAlta) = 2003 And Month(S.FechaBaja) = 6 And Year(S.FechaBaja) = 2003)
		Or (S.FechaBaja Is Null And SS.FechaBaja Is Null))
		)
Begin
	Declare Servicios Cursor For
	Select CargoSalarial, Horas From tb_ServiciosAgentes S
	Inner Join tb_SubServiciosAgentes SS On ServicioAgente = idServicioAgente
	Inner Join tb_Organizaciones On IdOrganizaciones = UbicacionOrig
	Where EsPrivada Is Null 
	And TipoDeServicio = 1 And ((Licencia Is Null) Or (Licencia Is Not Null And Licencia Not In (16,17,18,30,46) ))
	And ((S.FechaAlta <= '01/04/2003' And Month(S.FechaBaja) = 6 And Year(S.FechaBaja) = 2003) Or (Month(S.FechaAlta) = 4 And Month(S.FechaAlta) = 2003 And Month(S.FechaBaja) = 6 And Year(S.FechaBaja) = 2003)
		Or (S.FechaBaja Is Null And SS.FechaBaja Is Null))
	And SS.FechaAlta = (Select Max(FechaAlta) From tb_SubServiciosAgentes Where ServicioAgente = idServicioAgente)
	And Agente = @IdAgente
	Open Servicios

	Fetch Next From Servicios Into @CargoSalarial, @Horas
	
	While @@Fetch_Status = 0 And @TotalEstimulo < 112.00
	Begin
		Print 'CARGO SALARIAL: ' + Convert(Varchar, @CargoSalarial)
		Print 'MONTO ESTIMULO: ' + Convert(Varchar, @MontoEstimulo)
		Select @Porcentaje = Porcentaje From tb_PorcentajesDeEstimulo Where IdCargo = @CargoSalarial
		
		If @Porcentaje Is Null
		Begin
			Select @Estimulo = @MontoEstimulo
			Print 'Porcentaje nulo'
		End
		Else
		Begin
			Select @Estimulo = (@MontoEstimulo * @Porcentaje) / 100
			Print 'Porcentaje no nulo'
		End
		If @CargoSalarial In (2901, 3001)
			Select @Estimulo = (@Horas * @MontoEstimulo) / 15

		If @CargoSalarial In (4001)
			Select @Estimulo = (@Horas * @MontoEstimulo) / 12	

		If @TotalEstimulo + @Estimulo > 112.00
			Select @TotalEstimulo = 112.00
		Else	
			Select @TotalEstimulo = @TotalEstimulo + @Estimulo
				
		Select @Estimulo = 0

		Print 'TOTAL ESTIMULO: '+Convert(Varchar, @TotalEstimulo)

		Select @Porcentaje = Null

		Fetch Next From Servicios Into @CargoSalarial, @Horas

	End

	Insert Into EstimuloDeDocentes Select @idAgente, @TotalEstimulo

	Select @TotalEstimulo = 0
	
	Close Servicios
	Deallocate Servicios
End
	
	Fetch Next From Agentes Into @IdAgente
End

Close Agentes
Deallocate Agentes

--Select * From tb_Licencias Where idLicencia In (139,140,151,127,112,115)

--Select * From tb_Licencias Where idLicencia = 115

/*
delete from EstimuloDeDocentes

Select NumeroAfiliado, Convert(Varchar(10), Monto) As Estimulo, Nombres, Documento From EstimuloDeDocentes
Inner Join tb_Afiliaciones Af On Af.idagente = Agente 
Inner Join tb_Agentes A On A.idAgente = Agente
Where Organismo = 1
Order By Nombres
*/
GO
